<?php

namespace Org\Util;

use Com\Sms\REST;

//经销商的掌柜添加客栈时发送短信
define('SMS_TEMPLETE_ADDHOTEL_MESSAGE', '149001');

/**
 * 短信发送发送工具类
 * @modify trainyao 2015-09-27 创建
 */
class Sms {

    /**
     * 容联 ACCOUNT SID
     * @var string
     * @access private
     */
    private $accountSid = '8a48b5514b35422d014b491b4ac0087b';

    /**
     * 容联 AUTH TOKEN
     * @var string
     * @access private
     */
    private $accountToken = '9c3ff492aef74569a0d4795843cee970';

    /**
     * 容联 APP ID
     * @var string
     * @access private
     */
    private $appId = 'aaf98f894cc66b36014cdbeb7c7e0e39';

    /**
     * 容联 美住应用APPID
     * @var type 
     */
    private $meizhuAppId = 'aaf98f89524954cc01525ce7a63f25ba';

    /**
     * 容联 接收请求地址
     * @var string
     * @access private
     */
    private $serverIP = 'app.cloopen.com';

    /**
     * 容联 请求端口
     * @var string
     * @access private
     */
    private $serverPort = '8883';

    /**
     * 容联 REST库版本号
     * @var string
     * @access private
     */
    private $softVersion = '2013-12-26';

    /**
     * 构造函数
     * 创建一个短信发送对象,配置信息
     * @modify trainyao 2015-09-27 创建
     * @param string accountSid   容联 ACCOUNT SID
     * @param string $accountToken   容联 AUTH TOKEN
     * @param string $appId   容联 APP ID
     * @param string $serverIP   容联 接收请求地址
     * @param string $serverPort   容联 请求端口
     * @param string $softVersion   容联 REST库版本号
     */
    public function __construct($accountSid = NULL, $accountToken = NULL, $appId = NULL, $serverIP = NULL, $serverPort = NULL, $softVersion = NULL) {
        if (!empty($accountSid)) {
            $this->accountSid = $accountSid;
        }
        if (!empty($accountToken)) {
            $this->accountToken = $accountToken;
        }
        if (!empty($appId)) {
            $this->appId = $appId;
        }
        if (!empty($serverIP)) {
            $this->serverIP = $serverIP;
        }
        if (!empty($serverPort)) {
            $this->serverPort = $serverPort;
        }
        if (!empty($softVersion)) {
            $this->softVersion = $softVersion;
        }
    }

    /**
     * 发送模板短信
     * @modify trainyao 2015-09-27 创建
     * @param $to 手机号码集合,用英文逗号分开
     * @param $datas 内容数据 格式为数组 例如：array('Marry','Alon')，如不需替换请填 null
     * @param $tempId 模板Id,测试应用和未上线应用使用测试模板请填写1，正式应用上线后填写已申请审核通过的模板ID
     * @param $appFlag 应用标识 默认锁掌柜  1=美住应用ID
     * @return mixed 发送结果
     */
    public function sendTemplateSMS($to, $datas, $tempId, $appFlag) {
        // 初始化REST SDK
        $rest = new REST($this->serverIP, $this->serverPort, $this->softVersion);

        $rest->setAccount($this->accountSid, $this->accountToken);
        // $rest->setAppId($this->appId);
        if ($appFlag == 1) {
            $rest->setAppId($this->meizhuAppId);
        } else {
            $rest->setAppId($this->appId);
        }
        // 发送模板短信    
        $result = $rest->sendTemplateSMS($to, $datas, $tempId);
        if ($result == NULL) {  //发送出错 可能运营商 或 php_curl发送 出错
            return false;
        }
        if ($result->statusCode != 0) { //运营商规则 或者手机号有误
            return 0;
        } else { //成功
            return true;
        }
    }

    /**
     * 发送用户未注册开通客栈申请通知
     * @modify songanwei 2016-01-04
     * @param string $mobile 发送到此手机号码
     * @param string $user 被添加者名称
     * @param string $admin 管理员名称
     * @param string $communityName 集群名称
     * @param string $username 被添加者登录名称
     * @param string $password 初始密码
     * @return mixed 发送结果
     */
    public function sendNotReg($mobile, $password) {
        return $this->sendTemplateSMS($mobile, array($mobile, $password), SMS_TEMPLETE_NOT_REGISTER);
    }

    /**
     * 发送客栈申请拒绝短信通知
     * @modify songanwei 2016-03-23
     * @param type $mobile  发送到此手机号
     * @param type $hotelName 客栈名称
     * @return type
     */
    public function sendRefuse($mobile, $hotelName) {
        return $this->sendTemplateSMS($mobile, array($hotelName), SMS_TEMPLETE_APPLY_REFUSE, 1);
    }
    /**
     * 发送经销商申请拒绝短信通知
     * @modify zhangzhen 2017-01-09
     * @param type $mobile  发送到此手机号
     * @return type
     */
    public function sendDealerRefuse($mobile) {
        return $this->sendTemplateSMS($mobile, array($mobile), SMS_TEMPLETE_DEALER_REFUSE, 1);
    }
    /**
     * 发送经销商申请通过短信通知
     * @modify zhangzhen 2017-01-09
     * @param type $mobile  发送到此手机号
     * @param type $password 密码
     * @return type
     */
    public function sendDealerPass($mobile, $password) {
        return $this->sendTemplateSMS($mobile, array($mobile, $password), SMS_TEMPLETE_DEALER_PASS, 1);
    }
    /**
     * 发经销商客栈申请通过短信通知
     * @modify zhangzhen 2017-01-09
     * @param type $mobile  发送到此手机号
     * @param type $hotelName 客栈名称
     * @param type $userName 用户名
     * @return type
     */
    public function sendDealerHotelPass($mobile, $hotelName, $userName) {
        return $this->sendTemplateSMS($mobile, array($hotelName, $userName), SMS_TEMPLETE_DEALER_HOTEL_PASS, 1);
    }

    /**
     * 发送客户添加客栈信息给经销商
     * @modify zhangzhen 2017-01-12
     * @param string $mobile  发送手机号
     * @param string $password 发送密码
     * @return type
     */
    public function sendAddHotelToDealer($mobile,$userName,$userMobile,$hotelName) {
        return $this->sendTemplateSMS($mobile, array($userName, $userMobile, $hotelName), SMS_TEMPLETE_ADDHOTEL_MESSAGE, 1);
    }

}
